package com.cuit.zuke.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cuit.zuke.common.util.PageUtil;
import com.cuit.zuke.system.entity.SysAdminEntity;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @program: zuke
 * @description: 管理员
 * @author: KamTang
 * @create: 2022-04-01 17:17
 **/
public interface SysAdminService extends IService<SysAdminEntity> {

    /**
     * 分页查询
     * @param params 传入参数
     * @return PageUtil
     */
    PageUtil queryPage(Map<String, Object> params);

    /**
     * 重写分页查询
     * @param params 传入参数
     * @return PageUtil
     */
    PageUtil queryAdmin(Map<String, Object> params);


    /**
     * 根据用户名，查询系统管理员
     * @param username 用户名
     * @return AdminEntity
     */
    SysAdminEntity queryByUserName(String username);

    /**
     * 修改密码
     * @param userId 用户id
     * @param password 旧密码
     * @param newPassword 新密码
     * @return boolean
     */
    boolean updatePwd(Long userId, String password, String newPassword);

    /**
     * 根据部门id获取该部门下总人数
     * @param departmentId 部门id
     * @return int
     */
    int countPeopleByDepartmentId(Long departmentId);

    /**
     * 保存
     * @param admin 管理员
     */
    void saveUser(SysAdminEntity admin);

    /**
     * 修改
     * @param admin 管理员
     */
    void update(SysAdminEntity admin);

    /**
     * 根据id查询所有权限
     * @param userId id
     * @return 权限列表
     */
    List<String> queryAllPermsById(Long userId);

    /**
     * 获取用户权限列表
     * @param userId id
     * @return 无重复权限列表
     */
    Set<String> getUserPermissions(long userId);

    /**
     * 根据用户id获取该用户的所有菜单id
     * @param userId
     * @return 菜单id列表
     */
    List<Long> getMenuIdByUserId(Long userId);
}
